一、範例實作-使用URL及HttpURLConnection類別,讀入寫出純文字網頁
package ch14;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
import java.net.URLConnection;
import java.nio.charset.StandardCharsets;
public class Test1 {
	public static void main(String args[]) throws Exception {
		URL url = new URI("https://hackmd.io/s/tutorials-tw").toURL();
		HttpURLConnection connection = (HttpURLConnection) url.openConnection();
		final int statusCode = connection.getResponseCode();
		if (statusCode == 200) {
			try (InputStream is = connection.getInputStream();
					InputStreamReader isr = new InputStreamReader(is, StandardCharsets.UTF_8);
					BufferedReader br = new BufferedReader(isr);) { 
                    // BufferedReader 專門處理純文字資料,用來讀出純文字
				String line;
				while ((line = br.readLine()) != null) { // 使用BufferedReader內的readLine()方法
					System.out.println(line);
				}
			} catch (Exception e) {
				e.printStackTrace();
			} finally {
				connection.disconnect();
			}
		}
	}
}
二、範例解說
Reader),不是位元組(InputStream)。在上面的範例,BufferedReader負責接收InputStreamReader物件。三、補充
   [網路/檔案資料]
            │
            ▼
      InputStream
   (位元組流: byte[])
   ──────────────────────────────
   這裡讀到的是原始二進位資料,例如:
   0xE6 0xB8 0xAC 0xE8 0xA9 0xA6 ...
   ──────────────────────────────
            │ (需要文字編碼解碼)
            ▼
    InputStreamReader
   (位元組流 → 字元流)
   ──────────────────────────────
   把 byte[] 依指定編碼 (UTF-8/Big5...)
   解碼成 Java char (UTF-16)
   例如:
   '測' '試' ...
   ──────────────────────────────
            │ (字元流)
            ▼
     BufferedReader
   (加緩衝 + 便利方法)
   ──────────────────────────────
   提供 readLine(),一次讀取整行文字
   讓程式處理更方便
   ──────────────────────────────
            │
            ▼
       [Java String]
參考資料
https://hackmd.io/s/tutorials-tw
https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/net/package-summary.html
https://docs.oracle.com/en/java/javase/20/migrate/preparing-migration.html?utm_source=chatgpt.com